import pymysql


def input_person_data():
        """循环输入10个人的信息"""
        persons = []
        print("=" * 50)
        print("请依次输入10个人的信息（姓名,年龄,性别,身高）")
        print("注意：身高单位为米（例如：1.75）")
        print("=" * 50)

        for i in range(1, 11):
                print(f"\n👉 正在输入第{i}个人的信息：")
                while True:
                        try:
                                username = input("姓名: ").strip()
                                if not username:
                                        raise ValueError("姓名不能为空！")

                                age = int(input("年龄: "))
                                if age <= 0 or age > 150:
                                        raise ValueError("年龄必须在1-150之间！")

                                sex = input("性别（男/女）: ").strip()
                                if sex not in ['男', '女']:
                                        raise ValueError("性别只能输入'男'或'女'！")

                                high = float(input("身高(m): "))
                                if high < 0.5 or high > 2.5:
                                        raise ValueError("身高必须在0.5-2.5米之间！")

                                persons.append((username, age, sex, high))
                                break

                        except ValueError as e:
                                print(f"❌ 输入错误: {e}")
                                print("请重新输入当前人员的信息\n")

        return persons


def save_to_database(persons):
        """将人员信息保存到数据库"""
        try:
                # 连接MySQL数据库
                conn = pymysql.connect(
                        host='localhost',
                        port=3306,
                        database='hr',
                        user='root',
                        password='123456789',
                        charset='utf8'
                )

                with conn.cursor() as cursor:
                        # 如果表存在则删除（测试用，实际环境请移除）
                        cursor.execute("DROP TABLE IF EXISTS person")

                        # 创建person表
                        create_table_sql = """
            CREATE TABLE person(
                id INT AUTO_INCREMENT PRIMARY KEY,
                username VARCHAR(20),
                age INT,
                sex CHAR(4),
                high DOUBLE(3,2)
            )
            """
                        cursor.execute(create_table_sql)

                        # 插入人员数据
                        insert_sql = "INSERT INTO person (username, age, sex, high) VALUES (%s, %s, %s, %s)"
                        cursor.executemany(insert_sql, persons)

                        # 提交事务
                        conn.commit()
                        print(f"\n✅ 成功添加{len(persons)}条人员数据到数据库！")

        except pymysql.MySQLError as e:
                print(f"❌ 数据库操作失败: {e}")
        finally:
                # 关闭数据库连接
                if 'conn' in locals() and conn.open:
                        conn.close()
                        print("数据库连接已关闭")

        # 显示添加的数据（可选）
        print("\n添加的人员信息列表：")
        print("{:<5} {:<10} {:<5} {:<5} {:<5}".format("序号", "姓名", "年龄", "性别", "身高(m)"))
        print("-" * 35)
        for i, (name, age, sex, high) in enumerate(persons, 1):
                print("{:<5} {:<10} {:<5} {:<5} {:<8.2f}".format(i, name, age, sex, high))


if __name__ == "__main__":
        # 1. 输入人员数据
        persons_data = input_person_data()

        # 2. 保存到数据库
        save_to_database(persons_data)